package com.dc.designPattern._17_mediator.impl;

/**
 * Description: 中介者模式_客户端
 *
 * 闹铃响起->咖啡机开始 做咖啡->窗帘自动落下->电视机开始播放
 *
 * @author: gdc
 * @date: 2021/6/2
 * @version 1.0
 */
public class Client {

    public static void main(String[] args){
        // step 1 创建中介者对象
        Mediator mediator = new ConcreteMediator();

        // step 2 创建各个同事类，并添加到中介者 集合中
        Alarm alarm = new Alarm(mediator, "闹铃");
        CoffeeMachine coffeeMachine = new CoffeeMachine(mediator, "咖啡机");
        Curtains curtains = new Curtains(mediator, "窗帘");
        Tv tv = new Tv(mediator, "电视");

        // step 3 开始各个场景
        // step 3.1 闹铃响起 -> 开始制作咖啡 -> 看电视 ->  关闭窗帘
        alarm.sendAlarm(0);

        System.out.println("------------------------------------------------");
        // step 3.2 完成咖啡
        coffeeMachine.finishCoffee();
        System.out.println("------------------------------------------------");

        // step 3.3 闹铃响起 -> 开始关闭电视 -> 打开窗帘
        alarm.sendAlarm(0);
        alarm.sendMessage(1);

        System.out.println("------------------------------------------------");

        // step 3.4 新场景：看电视 -> 关闭窗帘
        tv.startTv();
        tv.sendMessage(0);

        // step 3.5 新场景：关闭电视 -> 打开窗帘
        tv.closeTv();
        tv.sendMessage(1);
    }

}
